home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / nihcl-30.lha / nihcl-3.0 / lib / HeapProc.h < prev    next >
C/C++ Source or Header  |  1990-05-19  |  2KB  |  63 lines

  1. #ifndef HEAPPROC_H
  2. #define HEAPPROC_H
  3.  
  4. /*$Header: /afs/alw.nih.gov/unix/sun4_40c/usr/local/src/nihcl-3.0/share/lib/RCS/HeapProc.h,v 3.0 90/05/20 00:19:47 kgorlen Rel $*/
  5.  
  6. /* HeapProc.h -- Specification for Process with stack on free storage heap
  7.  
  8.     THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A
  9.     "UNITED STATES GOVERNMENT WORK".  IT WAS WRITTEN AS A PART OF THE
  10.     AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE.  THIS MEANS IT
  11.     CANNOT BE COPYRIGHTED.  THIS SOFTWARE IS FREELY AVAILABLE TO THE
  12.     PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO
  13.     RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.
  14.  
  15. Author:
  16.     K. E. Gorlen
  17.     Computer Systems Laboratory, DCRT
  18.     National Institutes of Health
  19.     Bethesda, MD 20892
  20.     January, 1989
  21.  
  22. Modification History:
  23.  
  24. $Log:    HeapProc.h,v $
  25.  * Revision 3.0  90/05/20  00:19:47  kgorlen
  26.  * Release for 1st edition.
  27.  * 
  28. */
  29.  
  30. #include "Process.h"
  31.  
  32. class HeapProc: public Process {
  33.     DECLARE_MEMBERS(HeapProc);
  34.     unsigned long stack_size;    // size of stack in words
  35.     void setupStack();
  36. protected:
  37.     HeapProc(const char* name, stackTy* bottom, int priority =0, unsigned long size =1024);
  38.     virtual void switchContext(Process*);
  39.     virtual void switchFrom(HeapProc*);
  40.     virtual void switchFrom(StackProc*);
  41.     bool FORK() {
  42.         add();        // add this process to Scheduler runlist
  43.         if (_SETJMP(env) == 0) {
  44.             setupStack();
  45.             return YES;
  46.         }
  47.         else return NO;
  48.     }
  49. #ifndef BUG_38
  50. // internal <<AT&T C++ Translator 2.00 06/30/89>> error: bus error (or something nasty like that)
  51. protected:        // storer() functions for object I/O
  52.     virtual    void storer(OIOofd&) const    { shouldNotImplement("storer"); }
  53.     virtual    void storer(OIOout&) const    { shouldNotImplement("storer"); }
  54. public:
  55.     virtual    void deepenShallowCopy()    { shouldNotImplement("deepenShallowCopy"); }
  56. #endif
  57. public:
  58.     ~HeapProc();
  59.     virtual unsigned size() const;
  60. };
  61.  
  62. #endif
  63.